home *** CD-ROM | disk | FTP | other *** search
- CONFIGURATION
- EVAL_SAMPLE = 3;
- GENE_WEIGHT_INC = 2;
- MAX_BEST_ITEM = 10; ! range 1 - 100
- TEST_TIME = 2.5; ! second
- MIN_SCORE = 0.600;
- EVAL_NULL_BAND = 0.02;
-
- MAX_RULE = 12;
- MAX_CYCLE_RATE = 0.100; ! in second
- MIN_CYCLE_RATE = 0.035; ! in second
- END_CONFIGURATION;
-
- EVAL_SEGMENT Evaluation
-
- Cycle_time 0.05
-
- ! Name MIN MAX
- IN Pos_error (-70.0, 70.0)
- IN Current (-1.0, 1.0)
- OUT Eval_result (0, 1)
- OUT Reference(0, 70);
- !OUT Position (0, 70);
-
- Local Done (0, 1)
- Local Rising_time (0, 3)
- Local Err_oscilate (0, 10)
- Local Cur_oscilate (0, 10)
- Local err (0, 70)
- Local cur (0, 1)
- Local Err_dir (-1, 1)
- Local Old_err_dir (-1, 1)
- Local Cur_dir (-1, 1)
- Local Old_cur_dir (-1, 1)
-
- ! Name Below Low High Above Truth
- Symbol Very_good OF Rising_time ( 0.0, 0.0, 1.0, 2.0, 1.0)
- Symbol Good OF Rising_time ( 1.0, 2.0, 2.0, 3.0, 1.0)
- Symbol OK OF Rising_time ( 2.0, 3.0, 3.0, 4.0, 1.0)
- Symbol Bad OF Rising_time ( 3.0, 4.0, 4.0, 5.0, 1.0)
- Symbol Very_bad OF Rising_time ( 4.0, 5.0, 10.0, 10.0, 1.0)
-
- Symbol Under_shoot OF Pos_error (-70.0, -70.0, -2.0, -1.0, 1.0)
- Symbol Neg_small OF Pos_error ( -2.0, -1.0, -1.0, 0.0, 1.0)
- Symbol On_target OF Pos_error ( -1.0, 0.0, 0.0, 1.0, 1.0)
- Symbol Pos_small OF Pos_error ( 0.0, 1.0, 1.0, 2.0, 1.0)
- Symbol Over_shoot OF Pos_error ( 1.0, 2.0, 70.0, 70.0, 1.0)
-
- Symbol Very_good OF Eval_result ( 0.7, 0.8, 1.0, 1.0, 1.0, 1.0)
- Symbol Good OF Eval_result ( 0.5, 0.7, 0.8, 1.0, 1.0)
- Symbol Mid OF Eval_result ( 0.2, 0.4, 0.6, 0.8, 1.0)
- Symbol Bad OF Eval_result ( 0.1, 0.2, 0.3, 0.4, 1.0)
- Symbol Very_bad OF Eval_result ( 0.0, 0.0, 0.1, 0.2, 1.0, 0.0)
-
- Symbol No_oscil ( 0, 0, 1, 1, 1.0)
- Symbol Few_oscil ( 1, 2, 3, 4, 1.0)
- Symbol Mid_oscil ( 2, 3, 4, 5, 1.0)
- Symbol Lot_oscil ( 3, 4, 5, 6, 1.0)
- Symbol Unstable ( 4, 5, 10, 10, 1.0)
-
- Initialization
- Rising_time = 0;
- Err_Oscilate = 0;
- Cur_Oscilate = 0;
- Eval_result = 0;
- Done = 0;
- Old_err_dir = 0;
- Old_cur_dir = 0;
- Reference = 35;
- BEGIN
- err = pos_error;
- IF pos_error < 0 THEN
- err = - pos_error;
- ENDIF;
- IF Done = 0 THEN
- IF err > 2 THEN
- Rising_time = Rising_time + Delta_time;
- ELSE
- Done = 1;
- ENDIF;
- ENDIF;
-
- IF Pos_error = 0 THEN
- Err_dir = 0;
- ELSE
- IF Pos_error > 0 THEN
- Err_dir = 1;
- ELSE
- Err_dir = -1;
- ENDIF;
- ENDIF;
- IF Old_err_dir <> 0 THEN
- IF Err_dir <> Old_err_dir THEN
- IF err > 0.5 THEN
- Err_Oscilate = Err_Oscilate + 1;
- ENDIF;
- ENDIF;
- ENDIF;
- Old_err_dir = Err_dir;
-
- cur = current;
- IF current < 0 THEN
- cur = - current;
- ENDIF;
- IF current = 0 THEN
- cur_dir = 0;
- ELSE
- IF current > 0 THEN
- cur_dir = 1;
- ELSE
- cur_dir = -1;
- ENDIF;
- ENDIF;
- IF Old_cur_dir <> 0 THEN
- IF cur_dir <> Old_cur_dir THEN
- IF cur > 0.25 THEN
- cur_Oscilate = cur_Oscilate + 1;
- ENDIF;
- ENDIF;
- ENDIF;
- Old_cur_dir = cur_dir;
-
- END;
-
- IF Pos_error IS Under_shoot
- THEN Eval_result IS Very_bad
-
- IF Pos_error IS Neg_small
- THEN Eval_result IS Bad
-
- IF Pos_error IS On_target
- THEN Eval_result IS Very_good
-
- IF Pos_error IS Pos_small
- THEN Eval_result IS Mid
-
- IF Pos_error IS Over_shoot
- THEN Eval_result IS Very_bad
-
- !---------------------------
- IF Rising_time IS Very_good
- THEN Eval_result IS Very_good
-
- IF Rising_time IS Good
- THEN Eval_result IS Good
-
- IF Rising_time IS OK
- THEN Eval_result IS Mid
-
- IF Rising_time IS Bad
- THEN Eval_result IS Very_bad
-
- IF Rising_time IS Very_bad
- THEN Eval_result IS Very_bad
-
- !---------------------------
- IF Err_Oscilate IS No_oscil !AND Cur_Oscilate IS No_oscil
- THEN Eval_result IS Very_good
-
- IF Err_Oscilate IS Few_oscil !AND Cur_Oscilate IS Few_oscil
- THEN Eval_result IS Good
-
- IF Err_Oscilate IS Mid_oscil !AND Cur_Oscilate IS Mid
- THEN Eval_result IS Mid
-
- IF Err_Oscilate IS Lot_oscil OR Cur_Oscilate IS Lot_oscil
- THEN Eval_result IS Bad
-
- IF Err_Oscilate IS Unstable OR Cur_Oscilate IS Unstable
- THEN Eval_result IS Very_bad
-
- END Evaluation;
-